const cars = [
  {
    name: "Ferrari FF",
    horsepower: 660,
    dollar_value: 700000,
    in_stock: true,
  },
  {
    name: "Spyker C12 Zagato",
    horsepower: 650,
    dollar_value: 648000,
    in_stock: false,
  },
  {
    name: "Jaguar XKR - S",
    horsepower: 550,
    dollar_value: 132000,
    in_stock: false,
  },
  {
    name: "Audi R8",
    horsepower: 525,
    dollar_value: 114200,
    in_stock: false,
  },
  {
    name: "Aston Martin One— 77",
    horsepower: 750,
    dollar_value: 1850000,
    in_stock: true,
  },
  {
    name: "Pagani Huayra",
    horsepower: 700,
    dollar_value: 1300000,
    in_stock: false,
  },
];

const fp = require("lodash/fp");

//练习一

let isLastInStock = fp.flowRight(fp.prop("in_stock"), fp.last);
console.log(isLastInStock(cars));

// 练习二
let isFirstName = fp.flowRight(fp.prop("name"), fp.first);
console.log(isFirstName(cars));

// 练习三
let _average = function (xs) {
  return fp.reduce(fp.add, 0, xs) / xs.length;
};
// let averageDollarValue = function (cars) {
//   let dollar_value = fp.map(function (car) {
//     return car.dollar_value;
//   }, cars);
//   return _average(dollar_value);
// };
let dollar_value = function (cars) {
  return fp.map(function (car) {
    return car.dollar_value;
  }, cars);
};
let averageDollarValue = fp.flowRight(_average, dollar_value);

console.log(averageDollarValue(cars));

// 练习四

let _underscore = fp.replace(/\W+/g, "_");

let sanitizeNames = fp.flowRight(fp.split(" "), _underscore, fp.toLower);

console.log(sanitizeNames(["Hello World"]));
